iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
永豐金融APIs

菜鳥工程師想用C#做出金流微服務是否搞錯了什麼?系列 第 3

[Day 03]取得Nonce與HashID以產出Sign - [C#]豐收款API必備前置作業(二)

  • 分享至 

  • xImage
  •  

首先來個永豐官方的文件圖片作開場吧!
https://ithelp.ithome.com.tw/upload/images/20210917/20131205B8gGShc5sB.png
(圖一:由商戶->永豐正向發動的所需參數)

而我們今天要來談的是,要如何取得Nonce值,並且利用它來產生安全簽章Sign,以上準備動作都好了才能順利實踐“要求API服務”的動作。雖然看似麻蠻煩的,但這樣是為了確保整個流程的安全性。也許這個動態產生的Nonce值(文件上說是包含時間戳記的資訊?)可以拿來作為追蹤或其他用途,不過這也只是個人臆測而已也還沒有時間多做研究...希望有其他大神能幫忙解惑

從圖一來看,可以很清楚的知道:

  • 經由客戶(Client端)的API請求後,豐收款funBiz會提供一組Nonce,不過一旦超過60秒就會過期失效
    (之後會來稍微講一下api request timeout的部分)
  • 拿到Nonce之後,加上計算出來的HashID(圖二)
    https://ithelp.ithome.com.tw/upload/images/20210917/20131205AExNVMeHNj.png

廢話不多說,讓我們試著敲敲看API來取得Nonce吧,這次是採用永豐提供的這組Url:(https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Nonce)

https://ithelp.ithome.com.tw/upload/images/20210917/20131205z93xSgl93H.png

取得後的結果:

string nonce = "NjM2NjA0MzI4ODIyODguMzo3NzI0ZDg4ZmI5Nzc2YzQ1MTNhYzg2MTk3NDBlYTRhNGU0N2IxM2Q2M2JkMTIwOGU5YzZhMGFmNGY5MjA5YzVm";

再來就是處理四組字串(A1/A2;B1/B2),利用兩兩作XOR計算出的結果相加,算完之後要將英文轉為大寫喔!
沒問題的話,算出來應該會是像這樣長度為32的字串

string HashID = "17D8E6558DC60E702A6B57E1B9B7060D";

至於要怎麼算出 str1 XOR str2 ,可以去參考這篇文章:
XOR 的運算性質及應用

接下來,預計會在明天的部分一起來談SHA256以及AES CBC的部分!
See you!


上一篇
[Day 02] 工欲善其事,必先利其器 - [C#]豐收款API必備前置作業(一)
下一篇
[Day 04] C#輕鬆取得IV值&實作SHA256 - [C#]豐收款API必備前置作業(三)
系列文
菜鳥工程師想用C#做出金流微服務是否搞錯了什麼?15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言